{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> https://www.kaggle.com/arthurtok/introduction-to-ensembling-stacking-in-python"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Introduction\n",
    "\n",
    "本文是对集成方法的一个简单介绍，特别是Stacking方法。Stacking方法分两步，第一用first-level（base）分类器对输入进行预测，然后将预测结果输入到另一个second-level模型中，得到最后的预测结果。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<script>requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min']},});if(!window.Plotly) {{require(['plotly'],function(plotly) {window.Plotly=plotly;});}}</script>"
      ],
      "text/vnd.plotly.v1+html": [
       "<script>requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min']},});if(!window.Plotly) {{require(['plotly'],function(plotly) {window.Plotly=plotly;});}}</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Load in our libraries\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import re\n",
    "import sklearn\n",
    "import xgboost as xgb\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "import plotly.offline as py\n",
    "py.init_notebook_mode(connected=True)\n",
    "import plotly.graph_objs as go\n",
    "import plotly.tools as tls\n",
    "\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "\n",
    "# Going to use these 5 base models for the stacking\n",
    "from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier, GradientBoostingClassifier, ExtraTreesClassifier\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.cross_validation import KFold"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 特征探索特征工程和数据清洗"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Load in the train and test datasets\n",
    "train = pd.read_csv('../input/train.csv')\n",
    "test = pd.read_csv('../input/test.csv')\n",
    "\n",
    "# Store our passenger ID for easy access\n",
    "PassengerId = test['PassengerId']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 特征工程，引用别人的\n",
    "> https://www.kaggle.com/sinakhorami/titanic-best-working-classifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "full_data = [train, test]\n",
    "\n",
    "# Some features of my own that I have added in\n",
    "# Gives the length of the name\n",
    "train['Name_length'] = train['Name'].apply(len)\n",
    "test['Name_length'] = test['Name'].apply(len)\n",
    "# Feature that tells whether a passenger had a cabin on the Titanic\n",
    "train['Has_Cabin'] = train[\"Cabin\"].apply(lambda x: 0 if type(x) == float else 1)\n",
    "test['Has_Cabin'] = test[\"Cabin\"].apply(lambda x: 0 if type(x) == float else 1)\n",
    "\n",
    "# Feature engineering steps taken from Sina\n",
    "# Create new feature FamilySize as a combination of SibSp and Parch\n",
    "for dataset in full_data:\n",
    "    dataset['FamilySize'] = dataset['SibSp'] + dataset['Parch'] + 1\n",
    "# Create new feature IsAlone from FamilySize\n",
    "for dataset in full_data:\n",
    "    dataset['IsAlone'] = 0\n",
    "    dataset.loc[dataset['FamilySize'] == 1, 'IsAlone'] = 1\n",
    "# Remove all NULLS in the Embarked column\n",
    "for dataset in full_data:\n",
    "    dataset['Embarked'] = dataset['Embarked'].fillna('S')\n",
    "# Remove all NULLS in the Fare column and create a new feature CategoricalFare\n",
    "for dataset in full_data:\n",
    "    dataset['Fare'] = dataset['Fare'].fillna(train['Fare'].median())\n",
    "train['CategoricalFare'] = pd.qcut(train['Fare'], 4)\n",
    "# Create a New feature CategoricalAge\n",
    "for dataset in full_data:\n",
    "    age_avg = dataset['Age'].mean()\n",
    "    age_std = dataset['Age'].std()\n",
    "    age_null_count = dataset['Age'].isnull().sum()\n",
    "    age_null_random_list = np.random.randint(age_avg - age_std, age_avg + age_std, size=age_null_count)\n",
    "    dataset['Age'][np.isnan(dataset['Age'])] = age_null_random_list\n",
    "    dataset['Age'] = dataset['Age'].astype(int)\n",
    "train['CategoricalAge'] = pd.cut(train['Age'], 5)\n",
    "# Define function to extract titles from passenger names\n",
    "def get_title(name):\n",
    "    title_search = re.search(' ([A-Za-z]+)\\.', name)\n",
    "    # If the title exists, extract and return it.\n",
    "    if title_search:\n",
    "        return title_search.group(1)\n",
    "    return \"\"\n",
    "# Create a new feature Title, containing the titles of passenger names\n",
    "for dataset in full_data:\n",
    "    dataset['Title'] = dataset['Name'].apply(get_title)\n",
    "# Group all non-common titles into one single grouping \"Rare\"\n",
    "for dataset in full_data:\n",
    "    dataset['Title'] = dataset['Title'].replace(['Lady', 'Countess','Capt', 'Col','Don', 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'], 'Rare')\n",
    "\n",
    "    dataset['Title'] = dataset['Title'].replace('Mlle', 'Miss')\n",
    "    dataset['Title'] = dataset['Title'].replace('Ms', 'Miss')\n",
    "    dataset['Title'] = dataset['Title'].replace('Mme', 'Mrs')\n",
    "\n",
    "for dataset in full_data:\n",
    "    # Mapping Sex\n",
    "    dataset['Sex'] = dataset['Sex'].map( {'female': 0, 'male': 1} ).astype(int)\n",
    "    \n",
    "    # Mapping titles\n",
    "    title_mapping = {\"Mr\": 1, \"Miss\": 2, \"Mrs\": 3, \"Master\": 4, \"Rare\": 5}\n",
    "    dataset['Title'] = dataset['Title'].map(title_mapping)\n",
    "    dataset['Title'] = dataset['Title'].fillna(0)\n",
    "    \n",
    "    # Mapping Embarked\n",
    "    dataset['Embarked'] = dataset['Embarked'].map( {'S': 0, 'C': 1, 'Q': 2} ).astype(int)\n",
    "    \n",
    "    # Mapping Fare\n",
    "    dataset.loc[ dataset['Fare'] <= 7.91, 'Fare'] \t\t\t\t\t\t        = 0\n",
    "    dataset.loc[(dataset['Fare'] > 7.91) & (dataset['Fare'] <= 14.454), 'Fare'] = 1\n",
    "    dataset.loc[(dataset['Fare'] > 14.454) & (dataset['Fare'] <= 31), 'Fare']   = 2\n",
    "    dataset.loc[ dataset['Fare'] > 31, 'Fare'] \t\t\t\t\t\t\t        = 3\n",
    "    dataset['Fare'] = dataset['Fare'].astype(int)\n",
    "    \n",
    "    # Mapping Age\n",
    "    dataset.loc[ dataset['Age'] <= 16, 'Age'] \t\t\t\t\t       = 0\n",
    "    dataset.loc[(dataset['Age'] > 16) & (dataset['Age'] <= 32), 'Age'] = 1\n",
    "    dataset.loc[(dataset['Age'] > 32) & (dataset['Age'] <= 48), 'Age'] = 2\n",
    "    dataset.loc[(dataset['Age'] > 48) & (dataset['Age'] <= 64), 'Age'] = 3\n",
    "    dataset.loc[ dataset['Age'] > 64, 'Age'] = 4 ;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Feature selection\n",
    "drop_elements = ['PassengerId', 'Name', 'Ticket', 'Cabin', 'SibSp']\n",
    "train = train.drop(drop_elements, axis = 1)\n",
    "train = train.drop(['CategoricalAge', 'CategoricalFare'], axis = 1)\n",
    "test  = test.drop(drop_elements, axis = 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 完成了特征工程，数据处理和特征提取，现在的数据都是数值型的，整理好可以直接输入到模型中去的\n",
    "- 对数据进行一个可视化，看相关性和分布等"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Name_length</th>\n",
       "      <th>Has_Cabin</th>\n",
       "      <th>FamilySize</th>\n",
       "      <th>IsAlone</th>\n",
       "      <th>Title</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>23</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>51</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>22</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Survived  Pclass  Sex  Age  Parch  Fare  Embarked  Name_length  Has_Cabin  \\\n",
       "0         0       3    1    1      0     0         0           23          0   \n",
       "1         1       1    0    2      0     3         1           51          1   \n",
       "2         1       3    0    1      0     1         0           22          0   \n",
       "\n",
       "   FamilySize  IsAlone  Title  \n",
       "0           2        0      1  \n",
       "1           2        0      3  \n",
       "2           1        1      2  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 皮尔逊相关系数热图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x858e450>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nfjpBLqYZWzk3wtPBjX1XTplM2Sirv1cI047Pt2BSU/V9XElNLFO3SRk08HElLaXicTX8gwnoi/X8\ntimCJZ+bTqHxauiOTxMPjv1u2ZFdbwdnknJLj3HJuZkEm9mXJ7bowuSW3bHT2fDA7oUA1LWx49GA\nXjy0ZyEPBfS0aE5hHf/EEWhHpdRR488q47LLwCBN0zoBE4Cy3xl1Ap7RNC1AKdXGuL6XpmkdgGJg\nkrmNKKWmKKUOKqUOZm77w3K/jdHCM4fov+4LPji2nafa9bL49v4OG1sdno08OHXgHP8a9C6nDp7n\nkZljS9av+24XD902g2/fWs094XdYMWlFNjrFm1OHsXzTERIuGw6Yew7HMOaZ/+O+V77nQEQc058Y\nYuWU5gX7+lCs19Nz7teEfvkND3ftRBNXV2vHKrEs7g+G7/iEf5/azKMtQwFYHX+Y5LxMFvd+nBfb\n3sGxtHj01vhq5R9qxrLNTOgVwtLwidSzr0NhscXGAP62RecOMvCXuXwYuZ0nA3uXLD+elsCwLfMY\nt/0bHmvdizo6GyumNG//lUge/OMNnjz8PofTo3i+tdnThNUoFE+1GskXZ9Zet0wbl6bk6ws5n2P5\na1Gq6oPwRTw5dA4vTvgv7bo2J+zOzibr+43owJ6Nx9Hrb41jxuJzBxm0+XM+itzGE4F9AJjaJpQF\nZ/dxrbjQyumqgaas+3OL+ieOQOcaO79l2QGfK6X+7BQHlFn3h6Zp542Pw4DOwAGlFIAjhs53BZqm\nfQV8BdBiyTt/uxUnXcvCt27pVAjfus4k515/lHNt3ElmdxnCi393g1UwfHI/htxr6KxHH42jQSP3\nknUNfN1NRhIAMq/mkHctn9/WG74S3L32MIMnVvzkvWvVQaa+f49FMo8d1IGR/Q1ft546l4R3mekY\nnh7OpKRlm33dK4/cTnxSGsvKjD5nlpl2smZHBE9N7GuRzADJWdn4upRm9XF2IjnbNGtydja+zs4k\nZWVjoxRO9vak5ebxTFBrdp+Po0iv5+q1XA5dSqC9rzfxGRnlN1OtLudm4uNQ2lH3cnC94b67KSGC\n19uPgGNQrOn56OTGknULej5KXE7NXxh7K5nQK4Sx3dsBcCI+2WTU2NvNicsZpvvD5YxsvF2dTMtk\nGsrEXk7j8S9XAtDM040+Qc0tHb9Ecm4mPmWOaT6OLjfcL9bHR/JGx6EVlsdkpZJTVECAixeR6YkW\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x85aef90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "colormap = plt.cm.viridis\n",
    "plt.figure(figsize=(12,12))\n",
    "plt.title('Pearson Correlation of Features', y=1.05, size=15)\n",
    "sns.heatmap(train.astype(float).corr(),linewidths=0.1,vmax=1.0, square=True, cmap=colormap, linecolor='white', annot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 从上图中可以看出\n",
    "- 彼此的相关性不强烈，意味着我们的训练集中没有太多冗余或多余的数据，每个特征都带有一些独特的信息\n",
    "- 这两个最相关的功能是家庭大小和父母（父母和孩子）的特征。 为了本练习的目的，仍然会留下这两个功能。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 多变量图Pairplots\n",
    "- 观察两两特征的分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# g = sns.pairplot(train[[u'Survived', u'Pclass', u'Sex', u'Age', u'Parch', u'Fare', u'Embarked',\n",
    "#        u'FamilySize', u'Title']], hue='Survived', palette = 'seismic',size=1.2,diag_kind = 'kde',diag_kws=dict(shade=True),plot_kws=dict(s=10) )\n",
    "# g.set(xticklabels=[])\n",
    "# 这段代码在windows运行没问题，服务器出错"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Ensembling & Stacking models\n",
    "- 完成一个Stacking集成方法\n",
    "- 通过写一个helpers类来方便使用，因为scikit-learn中的算法都是有固定结构的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Some useful parameters which will come in handy later on\n",
    "ntrain = train.shape[0]\n",
    "ntest = test.shape[0]\n",
    "SEED = 0 # for reproducibility\n",
    "NFOLDS = 5 # set folds for out-of-fold prediction\n",
    "kf = KFold(ntrain, n_folds= NFOLDS, random_state=SEED)\n",
    "\n",
    "# Class to extend the Sklearn classifier\n",
    "class SklearnHelper(object):\n",
    "    def __init__(self, clf, seed=0, params=None):\n",
    "        params['random_state'] = seed\n",
    "        self.clf = clf(**params)\n",
    "\n",
    "    def train(self, x_train, y_train):\n",
    "        self.clf.fit(x_train, y_train)\n",
    "\n",
    "    def predict(self, x):\n",
    "        return self.clf.predict(x)\n",
    "    \n",
    "    def fit(self,x,y):\n",
    "        return self.clf.fit(x,y)\n",
    "    \n",
    "    def feature_importances(self,x,y):\n",
    "        print(self.clf.fit(x,y).feature_importances_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## out-of-fold Prediction\n",
    "- k折交叉验证\n",
    "- 把训练集分成两部分，一部分用来训练模型，另一部分用来评价模型，重复k次取平均"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def get_oof(clf, x_train, y_train, x_test):\n",
    "    oof_train = np.zeros((ntrain,))\n",
    "    oof_test = np.zeros((ntest,))\n",
    "    oof_test_skf = np.empty((NFOLDS, ntest))\n",
    "\n",
    "    for i, (train_index, test_index) in enumerate(kf):\n",
    "        x_tr = x_train[train_index]\n",
    "        y_tr = y_train[train_index]\n",
    "        x_te = x_train[test_index]\n",
    "\n",
    "        clf.train(x_tr, y_tr)\n",
    "\n",
    "        oof_train[test_index] = clf.predict(x_te)\n",
    "        oof_test_skf[i, :] = clf.predict(x_test)\n",
    "\n",
    "    oof_test[:] = oof_test_skf.mean(axis=0)\n",
    "    return oof_train.reshape(-1, 1), oof_test.reshape(-1, 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用sklearn准备5个基本的分类器（first-level classification）\n",
    "\n",
    "1. Random Forest classifier\n",
    "2. Extra Trees classifier\n",
    "3. AdaBoost classifer\n",
    "4. Gradient Boosting classifer\n",
    "5. Support Vector Machine\n",
    "\n",
    "\n",
    "- **参数设置(部分)**\n",
    "\n",
    "  - n_jobs : 训练过程中使用到的内核数，如果为-1，用到所有内核\n",
    "\n",
    "  - n_estimators : 分类树的数量，默认是10\n",
    "\n",
    "  - max_depth : 树的最大深度，或者节点能够分成几个。如果太大会有过拟合的风险\n",
    "\n",
    "  - verbose : 在学习过程中是否输出日志文本。0表示不输出，3表示输出每次迭代的信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Put in our parameters for said classifiers\n",
    "# Random Forest parameters\n",
    "rf_params = {\n",
    "    'n_jobs': -1,\n",
    "    'n_estimators': 500,\n",
    "     'warm_start': True, \n",
    "     #'max_features': 0.2,\n",
    "    'max_depth': 6,\n",
    "    'min_samples_leaf': 2,\n",
    "    'max_features' : 'sqrt',\n",
    "    'verbose': 0\n",
    "}\n",
    "\n",
    "# Extra Trees Parameters\n",
    "et_params = {\n",
    "    'n_jobs': -1,\n",
    "    'n_estimators':500,\n",
    "    #'max_features': 0.5,\n",
    "    'max_depth': 8,\n",
    "    'min_samples_leaf': 2,\n",
    "    'verbose': 0\n",
    "}\n",
    "\n",
    "# AdaBoost parameters\n",
    "ada_params = {\n",
    "    'n_estimators': 500,\n",
    "    'learning_rate' : 0.75\n",
    "}\n",
    "\n",
    "# Gradient Boosting parameters\n",
    "gb_params = {\n",
    "    'n_estimators': 500,\n",
    "     #'max_features': 0.2,\n",
    "    'max_depth': 5,\n",
    "    'min_samples_leaf': 2,\n",
    "    'verbose': 0\n",
    "}\n",
    "\n",
    "# Support Vector Classifier parameters \n",
    "svc_params = {\n",
    "    'kernel' : 'linear',\n",
    "    'C' : 0.025\n",
    "    }"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 创建5个基本分类器的helpers类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Create 5 objects that represent our 4 models\n",
    "rf = SklearnHelper(clf=RandomForestClassifier, seed=SEED, params=rf_params)\n",
    "et = SklearnHelper(clf=ExtraTreesClassifier, seed=SEED, params=et_params)\n",
    "ada = SklearnHelper(clf=AdaBoostClassifier, seed=SEED, params=ada_params)\n",
    "gb = SklearnHelper(clf=GradientBoostingClassifier, seed=SEED, params=gb_params)\n",
    "svc = SklearnHelper(clf=SVC, seed=SEED, params=svc_params)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 准备训练集和数据集\n",
    "- 用numpy的数组来存储训练集标签，dataframe存储特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Create Numpy arrays of train, test and target ( Survived) dataframes to feed into our models\n",
    "y_train = train['Survived'].ravel()\n",
    "train = train.drop(['Survived'], axis=1)\n",
    "x_train = train.values # Creates an array of the train data\n",
    "x_test = test.values # Creats an array of the test data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练5个基本分类器\n",
    "- 使用Out-of-Fold prediction，我们定义的方法进行训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training is complete\n"
     ]
    }
   ],
   "source": [
    "# Create our OOF train and test predictions. These base results will be used as new features\n",
    "et_oof_train, et_oof_test = get_oof(et, x_train, y_train, x_test) # Extra Trees\n",
    "rf_oof_train, rf_oof_test = get_oof(rf,x_train, y_train, x_test) # Random Forest\n",
    "ada_oof_train, ada_oof_test = get_oof(ada, x_train, y_train, x_test) # AdaBoost \n",
    "gb_oof_train, gb_oof_test = get_oof(gb,x_train, y_train, x_test) # Gradient Boost\n",
    "svc_oof_train, svc_oof_test = get_oof(svc,x_train, y_train, x_test) # Support Vector Classifier\n",
    "\n",
    "print(\"Training is complete\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 不同分类器中各个特征的重要度，或者说是基尼重要度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.12533755  0.20130913  0.03426538  0.02068527  0.07310591  0.02334423\n",
      "  0.10805643  0.06533606  0.06590284  0.01368746  0.26896973]\n",
      "[ 0.12034756  0.37566981  0.03247277  0.01673218  0.05552929  0.02816111\n",
      "  0.04737121  0.08300099  0.04442756  0.02194504  0.17434248]\n",
      "[ 0.034  0.01   0.016  0.064  0.038  0.008  0.698  0.014  0.048  0.004\n",
      "  0.066]\n",
      "[ 0.0748216   0.04003612  0.09152524  0.02757999  0.1030809   0.05686802\n",
      "  0.41277312  0.01681453  0.07202796  0.02327915  0.08119338]\n"
     ]
    }
   ],
   "source": [
    "rf_feature = rf.feature_importances(x_train,y_train)\n",
    "et_feature = et.feature_importances(x_train, y_train)\n",
    "ada_feature = ada.feature_importances(x_train, y_train)\n",
    "gb_feature = gb.feature_importances(x_train,y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 简单的将上面的值复制下来，因为不知道如何存储和使用特征重要度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "rf_features = [0.10474135,  0.21837029,  0.04432652,  0.02249159,  0.05432591,  0.02854371\n",
    "  ,0.07570305,  0.01088129 , 0.24247496,  0.13685733 , 0.06128402]\n",
    "et_features = [ 0.12165657,  0.37098307  ,0.03129623 , 0.01591611 , 0.05525811 , 0.028157\n",
    "  ,0.04589793 , 0.02030357 , 0.17289562 , 0.04853517,  0.08910063]\n",
    "ada_features = [0.028 ,   0.008  ,      0.012   ,     0.05866667,   0.032 ,       0.008\n",
    "  ,0.04666667 ,  0.     ,      0.05733333,   0.73866667,   0.01066667]\n",
    "gb_features = [ 0.06796144 , 0.03889349 , 0.07237845 , 0.02628645 , 0.11194395,  0.04778854\n",
    "  ,0.05965792 , 0.02774745,  0.07462718,  0.4593142 ,  0.01340093]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 用Dataframe存储如上的特征重要度，然后用plotly包画出来"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "cols = train.columns.values\n",
    "# Create a dataframe with features\n",
    "feature_dataframe = pd.DataFrame( {'features': cols,\n",
    "     'Random Forest feature importances': rf_features,\n",
    "     'Extra Trees  feature importances': et_features,\n",
    "      'AdaBoost feature importances': ada_features,\n",
    "    'Gradient Boost feature importances': gb_features\n",
    "    })"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 用Plotly scatterplots画出来"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "data": [
        {
         "marker": {
          "color": [
           0.10474135,
           0.21837029,
           0.04432652,
           0.02249159,
           0.05432591,
           0.02854371,
           0.07570305,
           0.01088129,
           0.24247496,
           0.13685733,
           0.06128402
          ],
          "colorscale": "Portland",
          "showscale": true,
          "size": 25,
          "sizemode": "diameter",
          "sizeref": 1
         },
         "mode": "markers",
         "text": [
          "Pclass",
          "Sex",
          "Age",
          "Parch",
          "Fare",
          "Embarked",
          "Name_length",
          "Has_Cabin",
          "FamilySize",
          "IsAlone",
          "Title"
         ],
         "type": "scatter",
         "x": [
          "Pclass",
          "Sex",
          "Age",
          "Parch",
          "Fare",
          "Embarked",
          "Name_length",
          "Has_Cabin",
          "FamilySize",
          "IsAlone",
          "Title"
         ],
         "y": [
          0.10474135,
          0.21837029,
          0.04432652,
          0.02249159,
          0.05432591,
          0.02854371,
          0.07570305,
          0.01088129,
          0.24247496,
          0.13685733,
          0.06128402
         ]
        }
       ],
       "layout": {
        "autosize": true,
        "hovermode": "closest",
        "showlegend": false,
        "title": "Random Forest Feature Importance",
        "yaxis": {
         "gridwidth": 2,
         "ticklen": 5,
         "title": "Feature Importance"
        }
       }
      },
      "text/html": [
       "<div id=\"6cc05894-883a-408d-ab2b-91a8518477d4\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";Plotly.newPlot(\"6cc05894-883a-408d-ab2b-91a8518477d4\", [{\"text\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"marker\": {\"sizeref\": 1, \"colorscale\": \"Portland\", \"color\": [0.10474135, 0.21837029, 0.04432652, 0.02249159, 0.05432591, 0.02854371, 0.07570305, 0.01088129, 0.24247496, 0.13685733, 0.06128402], \"sizemode\": \"diameter\", \"showscale\": true, \"size\": 25}, \"mode\": \"markers\", \"y\": [0.10474135, 0.21837029, 0.04432652, 0.02249159, 0.05432591, 0.02854371, 0.07570305, 0.01088129, 0.24247496, 0.13685733, 0.06128402], \"x\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"type\": \"scatter\"}], {\"autosize\": true, \"title\": \"Random Forest Feature Importance\", \"showlegend\": false, \"hovermode\": \"closest\", \"yaxis\": {\"ticklen\": 5, \"gridwidth\": 2, \"title\": \"Feature Importance\"}}, {\"linkText\": \"Export to plot.ly\", \"showLink\": true})});</script>"
      ],
      "text/vnd.plotly.v1+html": [
       "<div id=\"6cc05894-883a-408d-ab2b-91a8518477d4\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";Plotly.newPlot(\"6cc05894-883a-408d-ab2b-91a8518477d4\", [{\"text\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"marker\": {\"sizeref\": 1, \"colorscale\": \"Portland\", \"color\": [0.10474135, 0.21837029, 0.04432652, 0.02249159, 0.05432591, 0.02854371, 0.07570305, 0.01088129, 0.24247496, 0.13685733, 0.06128402], \"sizemode\": \"diameter\", \"showscale\": true, \"size\": 25}, \"mode\": \"markers\", \"y\": [0.10474135, 0.21837029, 0.04432652, 0.02249159, 0.05432591, 0.02854371, 0.07570305, 0.01088129, 0.24247496, 0.13685733, 0.06128402], \"x\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"type\": \"scatter\"}], {\"autosize\": true, \"title\": \"Random Forest Feature Importance\", \"showlegend\": false, \"hovermode\": \"closest\", \"yaxis\": {\"ticklen\": 5, \"gridwidth\": 2, \"title\": \"Feature Importance\"}}, {\"linkText\": \"Export to plot.ly\", \"showLink\": true})});</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "data": [
        {
         "marker": {
          "color": [
           0.12165657,
           0.37098307,
           0.03129623,
           0.01591611,
           0.05525811,
           0.028157,
           0.04589793,
           0.02030357,
           0.17289562,
           0.04853517,
           0.08910063
          ],
          "colorscale": "Portland",
          "showscale": true,
          "size": 25,
          "sizemode": "diameter",
          "sizeref": 1
         },
         "mode": "markers",
         "text": [
          "Pclass",
          "Sex",
          "Age",
          "Parch",
          "Fare",
          "Embarked",
          "Name_length",
          "Has_Cabin",
          "FamilySize",
          "IsAlone",
          "Title"
         ],
         "type": "scatter",
         "x": [
          "Pclass",
          "Sex",
          "Age",
          "Parch",
          "Fare",
          "Embarked",
          "Name_length",
          "Has_Cabin",
          "FamilySize",
          "IsAlone",
          "Title"
         ],
         "y": [
          0.12165657,
          0.37098307,
          0.03129623,
          0.01591611,
          0.05525811,
          0.028157,
          0.04589793,
          0.02030357,
          0.17289562,
          0.04853517,
          0.08910063
         ]
        }
       ],
       "layout": {
        "autosize": true,
        "hovermode": "closest",
        "showlegend": false,
        "title": "Extra Trees Feature Importance",
        "yaxis": {
         "gridwidth": 2,
         "ticklen": 5,
         "title": "Feature Importance"
        }
       }
      },
      "text/html": [
       "<div id=\"7c971c15-5337-47e9-a58d-d2612be76ce9\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";Plotly.newPlot(\"7c971c15-5337-47e9-a58d-d2612be76ce9\", [{\"text\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"marker\": {\"sizeref\": 1, \"colorscale\": \"Portland\", \"color\": [0.12165657, 0.37098307, 0.03129623, 0.01591611, 0.05525811, 0.028157, 0.04589793, 0.02030357, 0.17289562, 0.04853517, 0.08910063], \"sizemode\": \"diameter\", \"showscale\": true, \"size\": 25}, \"mode\": \"markers\", \"y\": [0.12165657, 0.37098307, 0.03129623, 0.01591611, 0.05525811, 0.028157, 0.04589793, 0.02030357, 0.17289562, 0.04853517, 0.08910063], \"x\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"type\": \"scatter\"}], {\"autosize\": true, \"title\": \"Extra Trees Feature Importance\", \"showlegend\": false, \"hovermode\": \"closest\", \"yaxis\": {\"ticklen\": 5, \"gridwidth\": 2, \"title\": \"Feature Importance\"}}, {\"linkText\": \"Export to plot.ly\", \"showLink\": true})});</script>"
      ],
      "text/vnd.plotly.v1+html": [
       "<div id=\"7c971c15-5337-47e9-a58d-d2612be76ce9\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";Plotly.newPlot(\"7c971c15-5337-47e9-a58d-d2612be76ce9\", [{\"text\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"marker\": {\"sizeref\": 1, \"colorscale\": \"Portland\", \"color\": [0.12165657, 0.37098307, 0.03129623, 0.01591611, 0.05525811, 0.028157, 0.04589793, 0.02030357, 0.17289562, 0.04853517, 0.08910063], \"sizemode\": \"diameter\", \"showscale\": true, \"size\": 25}, \"mode\": \"markers\", \"y\": [0.12165657, 0.37098307, 0.03129623, 0.01591611, 0.05525811, 0.028157, 0.04589793, 0.02030357, 0.17289562, 0.04853517, 0.08910063], \"x\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"type\": \"scatter\"}], {\"autosize\": true, \"title\": \"Extra Trees Feature Importance\", \"showlegend\": false, \"hovermode\": \"closest\", \"yaxis\": {\"ticklen\": 5, \"gridwidth\": 2, \"title\": \"Feature Importance\"}}, {\"linkText\": \"Export to plot.ly\", \"showLink\": true})});</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "data": [
        {
         "marker": {
          "color": [
           0.028,
           0.008,
           0.012,
           0.05866667,
           0.032,
           0.008,
           0.04666667,
           0,
           0.05733333,
           0.73866667,
           0.01066667
          ],
          "colorscale": "Portland",
          "showscale": true,
          "size": 25,
          "sizemode": "diameter",
          "sizeref": 1
         },
         "mode": "markers",
         "text": [
          "Pclass",
          "Sex",
          "Age",
          "Parch",
          "Fare",
          "Embarked",
          "Name_length",
          "Has_Cabin",
          "FamilySize",
          "IsAlone",
          "Title"
         ],
         "type": "scatter",
         "x": [
          "Pclass",
          "Sex",
          "Age",
          "Parch",
          "Fare",
          "Embarked",
          "Name_length",
          "Has_Cabin",
          "FamilySize",
          "IsAlone",
          "Title"
         ],
         "y": [
          0.028,
          0.008,
          0.012,
          0.05866667,
          0.032,
          0.008,
          0.04666667,
          0,
          0.05733333,
          0.73866667,
          0.01066667
         ]
        }
       ],
       "layout": {
        "autosize": true,
        "hovermode": "closest",
        "showlegend": false,
        "title": "AdaBoost Feature Importance",
        "yaxis": {
         "gridwidth": 2,
         "ticklen": 5,
         "title": "Feature Importance"
        }
       }
      },
      "text/html": [
       "<div id=\"ba6278dd-dc42-4dba-a61e-99207ff2f2a3\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";Plotly.newPlot(\"ba6278dd-dc42-4dba-a61e-99207ff2f2a3\", [{\"text\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"marker\": {\"sizeref\": 1, \"colorscale\": \"Portland\", \"color\": [0.028, 0.008, 0.012, 0.05866667, 0.032, 0.008, 0.04666667, 0.0, 0.05733333, 0.73866667, 0.01066667], \"sizemode\": \"diameter\", \"showscale\": true, \"size\": 25}, \"mode\": \"markers\", \"y\": [0.028, 0.008, 0.012, 0.05866667, 0.032, 0.008, 0.04666667, 0.0, 0.05733333, 0.73866667, 0.01066667], \"x\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"type\": \"scatter\"}], {\"autosize\": true, \"title\": \"AdaBoost Feature Importance\", \"showlegend\": false, \"hovermode\": \"closest\", \"yaxis\": {\"ticklen\": 5, \"gridwidth\": 2, \"title\": \"Feature Importance\"}}, {\"linkText\": \"Export to plot.ly\", \"showLink\": true})});</script>"
      ],
      "text/vnd.plotly.v1+html": [
       "<div id=\"ba6278dd-dc42-4dba-a61e-99207ff2f2a3\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";Plotly.newPlot(\"ba6278dd-dc42-4dba-a61e-99207ff2f2a3\", [{\"text\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"marker\": {\"sizeref\": 1, \"colorscale\": \"Portland\", \"color\": [0.028, 0.008, 0.012, 0.05866667, 0.032, 0.008, 0.04666667, 0.0, 0.05733333, 0.73866667, 0.01066667], \"sizemode\": \"diameter\", \"showscale\": true, \"size\": 25}, \"mode\": \"markers\", \"y\": [0.028, 0.008, 0.012, 0.05866667, 0.032, 0.008, 0.04666667, 0.0, 0.05733333, 0.73866667, 0.01066667], \"x\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"type\": \"scatter\"}], {\"autosize\": true, \"title\": \"AdaBoost Feature Importance\", \"showlegend\": false, \"hovermode\": \"closest\", \"yaxis\": {\"ticklen\": 5, \"gridwidth\": 2, \"title\": \"Feature Importance\"}}, {\"linkText\": \"Export to plot.ly\", \"showLink\": true})});</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "data": [
        {
         "marker": {
          "color": [
           0.06796144,
           0.03889349,
           0.07237845,
           0.02628645,
           0.11194395,
           0.04778854,
           0.05965792,
           0.02774745,
           0.07462718,
           0.4593142,
           0.01340093
          ],
          "colorscale": "Portland",
          "showscale": true,
          "size": 25,
          "sizemode": "diameter",
          "sizeref": 1
         },
         "mode": "markers",
         "text": [
          "Pclass",
          "Sex",
          "Age",
          "Parch",
          "Fare",
          "Embarked",
          "Name_length",
          "Has_Cabin",
          "FamilySize",
          "IsAlone",
          "Title"
         ],
         "type": "scatter",
         "x": [
          "Pclass",
          "Sex",
          "Age",
          "Parch",
          "Fare",
          "Embarked",
          "Name_length",
          "Has_Cabin",
          "FamilySize",
          "IsAlone",
          "Title"
         ],
         "y": [
          0.06796144,
          0.03889349,
          0.07237845,
          0.02628645,
          0.11194395,
          0.04778854,
          0.05965792,
          0.02774745,
          0.07462718,
          0.4593142,
          0.01340093
         ]
        }
       ],
       "layout": {
        "autosize": true,
        "hovermode": "closest",
        "showlegend": false,
        "title": "Gradient Boosting Feature Importance",
        "yaxis": {
         "gridwidth": 2,
         "ticklen": 5,
         "title": "Feature Importance"
        }
       }
      },
      "text/html": [
       "<div id=\"6726528f-a34b-46d7-b95e-efec0b2e057a\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";Plotly.newPlot(\"6726528f-a34b-46d7-b95e-efec0b2e057a\", [{\"text\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"marker\": {\"sizeref\": 1, \"colorscale\": \"Portland\", \"color\": [0.06796144, 0.03889349, 0.07237845, 0.02628645, 0.11194395, 0.04778854, 0.05965792, 0.02774745, 0.07462718, 0.4593142, 0.01340093], \"sizemode\": \"diameter\", \"showscale\": true, \"size\": 25}, \"mode\": \"markers\", \"y\": [0.06796144, 0.03889349, 0.07237845, 0.02628645, 0.11194395, 0.04778854, 0.05965792, 0.02774745, 0.07462718, 0.4593142, 0.01340093], \"x\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"type\": \"scatter\"}], {\"autosize\": true, \"title\": \"Gradient Boosting Feature Importance\", \"showlegend\": false, \"hovermode\": \"closest\", \"yaxis\": {\"ticklen\": 5, \"gridwidth\": 2, \"title\": \"Feature Importance\"}}, {\"linkText\": \"Export to plot.ly\", \"showLink\": true})});</script>"
      ],
      "text/vnd.plotly.v1+html": [
       "<div id=\"6726528f-a34b-46d7-b95e-efec0b2e057a\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";Plotly.newPlot(\"6726528f-a34b-46d7-b95e-efec0b2e057a\", [{\"text\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"marker\": {\"sizeref\": 1, \"colorscale\": \"Portland\", \"color\": [0.06796144, 0.03889349, 0.07237845, 0.02628645, 0.11194395, 0.04778854, 0.05965792, 0.02774745, 0.07462718, 0.4593142, 0.01340093], \"sizemode\": \"diameter\", \"showscale\": true, \"size\": 25}, \"mode\": \"markers\", \"y\": [0.06796144, 0.03889349, 0.07237845, 0.02628645, 0.11194395, 0.04778854, 0.05965792, 0.02774745, 0.07462718, 0.4593142, 0.01340093], \"x\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"type\": \"scatter\"}], {\"autosize\": true, \"title\": \"Gradient Boosting Feature Importance\", \"showlegend\": false, \"hovermode\": \"closest\", \"yaxis\": {\"ticklen\": 5, \"gridwidth\": 2, \"title\": \"Feature Importance\"}}, {\"linkText\": \"Export to plot.ly\", \"showLink\": true})});</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Scatter plot \n",
    "trace = go.Scatter(\n",
    "    y = feature_dataframe['Random Forest feature importances'].values,\n",
    "    x = feature_dataframe['features'].values,\n",
    "    mode='markers',\n",
    "    marker=dict(\n",
    "        sizemode = 'diameter',\n",
    "        sizeref = 1,\n",
    "        size = 25,\n",
    "#       size= feature_dataframe['AdaBoost feature importances'].values,\n",
    "        #color = np.random.randn(500), #set color equal to a variable\n",
    "        color = feature_dataframe['Random Forest feature importances'].values,\n",
    "        colorscale='Portland',\n",
    "        showscale=True\n",
    "    ),\n",
    "    text = feature_dataframe['features'].values\n",
    ")\n",
    "data = [trace]\n",
    "\n",
    "layout= go.Layout(\n",
    "    autosize= True,\n",
    "    title= 'Random Forest Feature Importance',\n",
    "    hovermode= 'closest',\n",
    "#     xaxis= dict(\n",
    "#         title= 'Pop',\n",
    "#         ticklen= 5,\n",
    "#         zeroline= False,\n",
    "#         gridwidth= 2,\n",
    "#     ),\n",
    "    yaxis=dict(\n",
    "        title= 'Feature Importance',\n",
    "        ticklen= 5,\n",
    "        gridwidth= 2\n",
    "    ),\n",
    "    showlegend= False\n",
    ")\n",
    "fig = go.Figure(data=data, layout=layout)\n",
    "py.iplot(fig,filename='scatter2010')\n",
    "\n",
    "# Scatter plot \n",
    "trace = go.Scatter(\n",
    "    y = feature_dataframe['Extra Trees  feature importances'].values,\n",
    "    x = feature_dataframe['features'].values,\n",
    "    mode='markers',\n",
    "    marker=dict(\n",
    "        sizemode = 'diameter',\n",
    "        sizeref = 1,\n",
    "        size = 25,\n",
    "#       size= feature_dataframe['AdaBoost feature importances'].values,\n",
    "        #color = np.random.randn(500), #set color equal to a variable\n",
    "        color = feature_dataframe['Extra Trees  feature importances'].values,\n",
    "        colorscale='Portland',\n",
    "        showscale=True\n",
    "    ),\n",
    "    text = feature_dataframe['features'].values\n",
    ")\n",
    "data = [trace]\n",
    "\n",
    "layout= go.Layout(\n",
    "    autosize= True,\n",
    "    title= 'Extra Trees Feature Importance',\n",
    "    hovermode= 'closest',\n",
    "#     xaxis= dict(\n",
    "#         title= 'Pop',\n",
    "#         ticklen= 5,\n",
    "#         zeroline= False,\n",
    "#         gridwidth= 2,\n",
    "#     ),\n",
    "    yaxis=dict(\n",
    "        title= 'Feature Importance',\n",
    "        ticklen= 5,\n",
    "        gridwidth= 2\n",
    "    ),\n",
    "    showlegend= False\n",
    ")\n",
    "fig = go.Figure(data=data, layout=layout)\n",
    "py.iplot(fig,filename='scatter2010')\n",
    "\n",
    "# Scatter plot \n",
    "trace = go.Scatter(\n",
    "    y = feature_dataframe['AdaBoost feature importances'].values,\n",
    "    x = feature_dataframe['features'].values,\n",
    "    mode='markers',\n",
    "    marker=dict(\n",
    "        sizemode = 'diameter',\n",
    "        sizeref = 1,\n",
    "        size = 25,\n",
    "#       size= feature_dataframe['AdaBoost feature importances'].values,\n",
    "        #color = np.random.randn(500), #set color equal to a variable\n",
    "        color = feature_dataframe['AdaBoost feature importances'].values,\n",
    "        colorscale='Portland',\n",
    "        showscale=True\n",
    "    ),\n",
    "    text = feature_dataframe['features'].values\n",
    ")\n",
    "data = [trace]\n",
    "\n",
    "layout= go.Layout(\n",
    "    autosize= True,\n",
    "    title= 'AdaBoost Feature Importance',\n",
    "    hovermode= 'closest',\n",
    "#     xaxis= dict(\n",
    "#         title= 'Pop',\n",
    "#         ticklen= 5,\n",
    "#         zeroline= False,\n",
    "#         gridwidth= 2,\n",
    "#     ),\n",
    "    yaxis=dict(\n",
    "        title= 'Feature Importance',\n",
    "        ticklen= 5,\n",
    "        gridwidth= 2\n",
    "    ),\n",
    "    showlegend= False\n",
    ")\n",
    "fig = go.Figure(data=data, layout=layout)\n",
    "py.iplot(fig,filename='scatter2010')\n",
    "\n",
    "# Scatter plot \n",
    "trace = go.Scatter(\n",
    "    y = feature_dataframe['Gradient Boost feature importances'].values,\n",
    "    x = feature_dataframe['features'].values,\n",
    "    mode='markers',\n",
    "    marker=dict(\n",
    "        sizemode = 'diameter',\n",
    "        sizeref = 1,\n",
    "        size = 25,\n",
    "#       size= feature_dataframe['AdaBoost feature importances'].values,\n",
    "        #color = np.random.randn(500), #set color equal to a variable\n",
    "        color = feature_dataframe['Gradient Boost feature importances'].values,\n",
    "        colorscale='Portland',\n",
    "        showscale=True\n",
    "    ),\n",
    "    text = feature_dataframe['features'].values\n",
    ")\n",
    "data = [trace]\n",
    "\n",
    "layout= go.Layout(\n",
    "    autosize= True,\n",
    "    title= 'Gradient Boosting Feature Importance',\n",
    "    hovermode= 'closest',\n",
    "#     xaxis= dict(\n",
    "#         title= 'Pop',\n",
    "#         ticklen= 5,\n",
    "#         zeroline= False,\n",
    "#         gridwidth= 2,\n",
    "#     ),\n",
    "    yaxis=dict(\n",
    "        title= 'Feature Importance',\n",
    "        ticklen= 5,\n",
    "        gridwidth= 2\n",
    "    ),\n",
    "    showlegend= False\n",
    ")\n",
    "fig = go.Figure(data=data, layout=layout)\n",
    "py.iplot(fig,filename='scatter2010')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 计算所有特征重要性的均值，然后作为一列保存在feature importance dataframe中"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>AdaBoost feature importances</th>\n",
       "      <th>Extra Trees  feature importances</th>\n",
       "      <th>Gradient Boost feature importances</th>\n",
       "      <th>Random Forest feature importances</th>\n",
       "      <th>features</th>\n",
       "      <th>mean</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.028</td>\n",
       "      <td>0.121657</td>\n",
       "      <td>0.067961</td>\n",
       "      <td>0.104741</td>\n",
       "      <td>Pclass</td>\n",
       "      <td>0.080590</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.008</td>\n",
       "      <td>0.370983</td>\n",
       "      <td>0.038893</td>\n",
       "      <td>0.218370</td>\n",
       "      <td>Sex</td>\n",
       "      <td>0.159062</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.012</td>\n",
       "      <td>0.031296</td>\n",
       "      <td>0.072378</td>\n",
       "      <td>0.044327</td>\n",
       "      <td>Age</td>\n",
       "      <td>0.040000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   AdaBoost feature importances  Extra Trees  feature importances  \\\n",
       "0                         0.028                          0.121657   \n",
       "1                         0.008                          0.370983   \n",
       "2                         0.012                          0.031296   \n",
       "\n",
       "   Gradient Boost feature importances  Random Forest feature importances  \\\n",
       "0                            0.067961                           0.104741   \n",
       "1                            0.038893                           0.218370   \n",
       "2                            0.072378                           0.044327   \n",
       "\n",
       "  features      mean  \n",
       "0   Pclass  0.080590  \n",
       "1      Sex  0.159062  \n",
       "2      Age  0.040000  "
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create the new column containing the average of values\n",
    "\n",
    "feature_dataframe['mean'] = feature_dataframe.mean(axis= 1) # axis = 1 computes the mean row-wise\n",
    "feature_dataframe.head(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 用Plotly Barplot画出平均重要度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "data": [
        {
         "marker": {
          "color": [
           0.08058984000000001,
           0.1590617125,
           0.0400003,
           0.030840205000000002,
           0.0633819925,
           0.0281223125,
           0.0569813925,
           0.0147330775,
           0.1368327725,
           0.3458433425,
           0.0436130625
          ],
          "colorscale": "Portland",
          "reversescale": false,
          "showscale": true
         },
         "opacity": 0.6,
         "type": "bar",
         "width": 0.5,
         "x": [
          "Pclass",
          "Sex",
          "Age",
          "Parch",
          "Fare",
          "Embarked",
          "Name_length",
          "Has_Cabin",
          "FamilySize",
          "IsAlone",
          "Title"
         ],
         "y": [
          0.08058984000000001,
          0.1590617125,
          0.0400003,
          0.030840205000000002,
          0.0633819925,
          0.0281223125,
          0.0569813925,
          0.0147330775,
          0.1368327725,
          0.3458433425,
          0.0436130625
         ]
        }
       ],
       "layout": {
        "autosize": true,
        "hovermode": "closest",
        "showlegend": false,
        "title": "Barplots of Mean Feature Importance",
        "yaxis": {
         "gridwidth": 2,
         "ticklen": 5,
         "title": "Feature Importance"
        }
       }
      },
      "text/html": [
       "<div id=\"7597e746-3ff7-48bc-80c3-aa6ab961f065\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";Plotly.newPlot(\"7597e746-3ff7-48bc-80c3-aa6ab961f065\", [{\"opacity\": 0.6, \"width\": 0.5, \"y\": [0.08058984000000001, 0.1590617125, 0.0400003, 0.030840205000000002, 0.0633819925, 0.0281223125, 0.0569813925, 0.0147330775, 0.1368327725, 0.3458433425, 0.0436130625], \"x\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"type\": \"bar\", \"marker\": {\"reversescale\": false, \"color\": [0.08058984000000001, 0.1590617125, 0.0400003, 0.030840205000000002, 0.0633819925, 0.0281223125, 0.0569813925, 0.0147330775, 0.1368327725, 0.3458433425, 0.0436130625], \"showscale\": true, \"colorscale\": \"Portland\"}}], {\"autosize\": true, \"title\": \"Barplots of Mean Feature Importance\", \"showlegend\": false, \"hovermode\": \"closest\", \"yaxis\": {\"ticklen\": 5, \"gridwidth\": 2, \"title\": \"Feature Importance\"}}, {\"linkText\": \"Export to plot.ly\", \"showLink\": true})});</script>"
      ],
      "text/vnd.plotly.v1+html": [
       "<div id=\"7597e746-3ff7-48bc-80c3-aa6ab961f065\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";Plotly.newPlot(\"7597e746-3ff7-48bc-80c3-aa6ab961f065\", [{\"opacity\": 0.6, \"width\": 0.5, \"y\": [0.08058984000000001, 0.1590617125, 0.0400003, 0.030840205000000002, 0.0633819925, 0.0281223125, 0.0569813925, 0.0147330775, 0.1368327725, 0.3458433425, 0.0436130625], \"x\": [\"Pclass\", \"Sex\", \"Age\", \"Parch\", \"Fare\", \"Embarked\", \"Name_length\", \"Has_Cabin\", \"FamilySize\", \"IsAlone\", \"Title\"], \"type\": \"bar\", \"marker\": {\"reversescale\": false, \"color\": [0.08058984000000001, 0.1590617125, 0.0400003, 0.030840205000000002, 0.0633819925, 0.0281223125, 0.0569813925, 0.0147330775, 0.1368327725, 0.3458433425, 0.0436130625], \"showscale\": true, \"colorscale\": \"Portland\"}}], {\"autosize\": true, \"title\": \"Barplots of Mean Feature Importance\", \"showlegend\": false, \"hovermode\": \"closest\", \"yaxis\": {\"ticklen\": 5, \"gridwidth\": 2, \"title\": \"Feature Importance\"}}, {\"linkText\": \"Export to plot.ly\", \"showLink\": true})});</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y = feature_dataframe['mean'].values\n",
    "x = feature_dataframe['features'].values\n",
    "data = [go.Bar(\n",
    "            x= x,\n",
    "             y= y,\n",
    "            width = 0.5,\n",
    "            marker=dict(\n",
    "               color = feature_dataframe['mean'].values,\n",
    "            colorscale='Portland',\n",
    "            showscale=True,\n",
    "            reversescale = False\n",
    "            ),\n",
    "            opacity=0.6\n",
    "        )]\n",
    "\n",
    "layout= go.Layout(\n",
    "    autosize= True,\n",
    "    title= 'Barplots of Mean Feature Importance',\n",
    "    hovermode= 'closest',\n",
    "#     xaxis= dict(\n",
    "#         title= 'Pop',\n",
    "#         ticklen= 5,\n",
    "#         zeroline= False,\n",
    "#         gridwidth= 2,\n",
    "#     ),\n",
    "    yaxis=dict(\n",
    "        title= 'Feature Importance',\n",
    "        ticklen= 5,\n",
    "        gridwidth= 2\n",
    "    ),\n",
    "    showlegend= False\n",
    ")\n",
    "fig = go.Figure(data=data, layout=layout)\n",
    "py.iplot(fig, filename='bar-direct-labels')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 用基本分类器（first-level）的输出进行整合预测（Second-level）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>AdaBoost</th>\n",
       "      <th>ExtraTrees</th>\n",
       "      <th>GradientBoost</th>\n",
       "      <th>RandomForest</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   AdaBoost  ExtraTrees  GradientBoost  RandomForest\n",
       "0       0.0         0.0            0.0           0.0\n",
       "1       1.0         1.0            1.0           1.0\n",
       "2       1.0         0.0            1.0           0.0\n",
       "3       1.0         1.0            1.0           1.0\n",
       "4       0.0         0.0            0.0           0.0"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "base_predictions_train = pd.DataFrame( {'RandomForest': rf_oof_train.ravel(),\n",
    "     'ExtraTrees': et_oof_train.ravel(),\n",
    "     'AdaBoost': ada_oof_train.ravel(),\n",
    "      'GradientBoost': gb_oof_train.ravel()\n",
    "    })\n",
    "base_predictions_train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 二层训练集的相关热图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "data": [
        {
         "colorscale": "Portland",
         "reversescale": true,
         "showscale": true,
         "type": "heatmap",
         "x": [
          "AdaBoost",
          "ExtraTrees",
          "GradientBoost",
          "RandomForest"
         ],
         "y": [
          "AdaBoost",
          "ExtraTrees",
          "GradientBoost",
          "RandomForest"
         ],
         "z": [
          [
           1,
           0.7659765347159588,
           0.6662580937181357,
           0.7602043526290674
          ],
          [
           0.7659765347159588,
           1,
           0.739782411426197,
           0.8555775218080321
          ],
          [
           0.6662580937181357,
           0.739782411426197,
           1,
           0.735164220344485
          ],
          [
           0.7602043526290674,
           0.8555775218080321,
           0.735164220344485,
           1
          ]
         ]
        }
       ],
       "layout": {}
      },
      "text/html": [
       "<div id=\"d9fad19a-299a-44da-8c3e-6ea9751c8677\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";Plotly.newPlot(\"d9fad19a-299a-44da-8c3e-6ea9751c8677\", [{\"colorscale\": \"Portland\", \"reversescale\": true, \"showscale\": true, \"y\": [\"AdaBoost\", \"ExtraTrees\", \"GradientBoost\", \"RandomForest\"], \"x\": [\"AdaBoost\", \"ExtraTrees\", \"GradientBoost\", \"RandomForest\"], \"z\": [[1.0, 0.7659765347159588, 0.6662580937181357, 0.7602043526290674], [0.7659765347159588, 1.0, 0.739782411426197, 0.8555775218080321], [0.6662580937181357, 0.739782411426197, 1.0, 0.735164220344485], [0.7602043526290674, 0.8555775218080321, 0.735164220344485, 1.0]], \"type\": \"heatmap\"}], {}, {\"linkText\": \"Export to plot.ly\", \"showLink\": true})});</script>"
      ],
      "text/vnd.plotly.v1+html": [
       "<div id=\"d9fad19a-299a-44da-8c3e-6ea9751c8677\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";Plotly.newPlot(\"d9fad19a-299a-44da-8c3e-6ea9751c8677\", [{\"colorscale\": \"Portland\", \"reversescale\": true, \"showscale\": true, \"y\": [\"AdaBoost\", \"ExtraTrees\", \"GradientBoost\", \"RandomForest\"], \"x\": [\"AdaBoost\", \"ExtraTrees\", \"GradientBoost\", \"RandomForest\"], \"z\": [[1.0, 0.7659765347159588, 0.6662580937181357, 0.7602043526290674], [0.7659765347159588, 1.0, 0.739782411426197, 0.8555775218080321], [0.6662580937181357, 0.739782411426197, 1.0, 0.735164220344485], [0.7602043526290674, 0.8555775218080321, 0.735164220344485, 1.0]], \"type\": \"heatmap\"}], {}, {\"linkText\": \"Export to plot.ly\", \"showLink\": true})});</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data = [\n",
    "    go.Heatmap(\n",
    "        z= base_predictions_train.astype(float).corr().values ,\n",
    "        x=base_predictions_train.columns.values,\n",
    "        y= base_predictions_train.columns.values,\n",
    "          colorscale='Portland',\n",
    "            showscale=True,\n",
    "            reversescale = True\n",
    "    )\n",
    "]\n",
    "py.iplot(data, filename='labelled-heatmap')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 已经有不少文章和Kaggle比赛获奖者的故事讲述了训练有素的模型与彼此之间不相关的优点。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.,  0.,  0.,  0.,  0.],\n",
       "       [ 1.,  1.,  1.,  1.,  1.],\n",
       "       [ 0.,  0.,  1.,  1.,  1.],\n",
       "       ..., \n",
       "       [ 0.,  0.,  0.,  0.,  1.],\n",
       "       [ 0.,  0.,  1.,  0.,  0.],\n",
       "       [ 0.,  0.,  0.,  0.,  0.]])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train = np.concatenate(( et_oof_train, rf_oof_train, ada_oof_train, gb_oof_train, svc_oof_train), axis=1)\n",
    "x_test = np.concatenate(( et_oof_test, rf_oof_test, ada_oof_test, gb_oof_test, svc_oof_test), axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 有了上面用基本分类器构建的训练集和测试集，我们就可以训练二级模型了"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 用XGBoost来构建二级模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "gbm = xgb.XGBClassifier(\n",
    "    #learning_rate = 0.02,\n",
    " n_estimators= 2000,\n",
    " max_depth= 4,\n",
    " min_child_weight= 2,\n",
    " #gamma=1,\n",
    " gamma=0.9,                        \n",
    " subsample=0.8,\n",
    " colsample_bytree=0.8,\n",
    " objective= 'binary:logistic',\n",
    " nthread= -1,\n",
    " scale_pos_weight=1).fit(x_train, y_train)\n",
    "predictions = gbm.predict(x_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 用到的一些参数\n",
    "- max_depth : 构建树的最大深度，过大会导致过拟合\n",
    "\n",
    "- gamma : 在树的叶节点上进一步分割的最小损失减少。越大，算法越保守。\n",
    "\n",
    "- eta : 取值范围[0,1]，学习率，迭代的步长比例，防止过拟合"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 生成提交文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Generate Submission File \n",
    "StackingSubmission = pd.DataFrame({ 'PassengerId': PassengerId,\n",
    "                            'Survived': predictions })\n",
    "# StackingSubmission.to_csv(\"StackingSubmission.csv\", index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 提高方向\n",
    "- 上面的方法只是一个简单的Stacking集成，其他的人使用混合集成或者集成超过2层\n",
    "- 可以用一下方法来提高分数：\n",
    "  1. 良好的交叉验证策略，以找到最佳参数值\n",
    "  2. 介绍更多种类的基础模型进行学习。 结果越不相关，最终得分越好。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
